<?php
/**
 * 熵巡 - 企业级氚云OpenAPI数据管理平台
 * 开发归属 Alyr.net
 * 保存数据库配置接口 - MySQL/PostgreSQL/SQLServer/TDsql-C配置保存
 * 尊重劳动成果是一种美德
 */

error_reporting(E_ALL);
ini_set('display_errors', 0);
header('Content-Type: application/json');

// 日志记录函数已禁用
// function writeLog($message, $dbType = 'system') {}

try {
    // writeLog('数据库配置保存请求开始', 'system');
    
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        // writeLog('错误: 请求方法不正确', 'system');
        echo json_encode(['success' => false, 'message' => '请求方法错误']);
        exit;
    }

    $dbType = $_POST['type'] ?? '';
    $enabled = isset($_POST['enabled']) && $_POST['enabled'] === 'true' ? true : false;
    
    // 支持的数据库类型
    $supportedTypes = ['mysql', 'tdsql_c', 'sql_server', 'postgresql'];
    
    if (!in_array($dbType, $supportedTypes)) {
        // writeLog("错误: 不支持的数据库类型: {$dbType}", 'system');
        echo json_encode(['success' => false, 'message' => '不支持的数据库类型']);
        exit;
    }

    $configFile = __DIR__ . '/../config.php';
    if (!file_exists($configFile)) {
        // writeLog('错误: 配置文件不存在', $dbType);
        echo json_encode(['success' => false, 'message' => '配置文件不存在']);
        exit;
    }

    // writeLog("处理数据库配置 - 类型: {$dbType}, 启用状态: " . ($enabled ? 'true' : 'false'), $dbType);
    
    // 读取现有配置
    $config = include $configFile;
    if (!isset($config['databases'])) {
        // writeLog('错误: 数据库配置不存在', $dbType);
        echo json_encode(['success' => false, 'message' => '数据库配置不存在']);
        exit;
    }

    // 互斥逻辑：如果要启用当前数据库，先禁用所有其他数据库
    if ($enabled) {
        // writeLog("启用 {$dbType}，将禁用其他所有数据库", $dbType);
        foreach ($supportedTypes as $type) {
            if ($type !== $dbType) {
                $config['databases'][$type]['enabled'] = false;
                // writeLog("禁用数据库: {$type}", $dbType);
            }
        }
    }

    // 更新当前数据库的配置
    $config['databases'][$dbType]['enabled'] = $enabled;
    
    // 更新其他字段（如果提供）
    $fieldMap = [
        'secret_id' => 'secret_id',
        'secret_key' => 'secret_key', 
        'region' => 'region',
        'instance_id' => 'instance_id',
        'host' => 'host',
        'port' => 'port',
        'database' => 'database',
        'username' => 'username',
        'password' => 'password'
    ];
    
    foreach ($fieldMap as $postKey => $configKey) {
        if (isset($_POST[$postKey])) {
            $config['databases'][$dbType][$configKey] = $_POST[$postKey];
        }
    }

    // 将配置数组转换为PHP文件格式
    $configContent = "<?php\n/**\n * 氚云API管理系统配置文件\n * Alyr.net 企业级配置管理\n */\n\n// 氚云API配置\nreturn " . var_export($config, true) . ";\n";

    // 保存配置文件
    if (file_put_contents($configFile, $configContent)) {
        // writeLog('数据库配置保存成功', $dbType);
        
        // 返回当前所有数据库的启用状态
        $dbStates = [];
        foreach ($supportedTypes as $type) {
            $dbStates[$type] = $config['databases'][$type]['enabled'] ?? false;
        }
        
        echo json_encode([
            'success' => true, 
            'message' => '配置保存成功',
            'database_states' => $dbStates
        ]);
    } else {
        // writeLog('错误: 配置保存失败', $dbType);
        echo json_encode(['success' => false, 'message' => '配置保存失败']);
    }
    
} catch (Exception $e) {
    $errorMsg = $e->getMessage();
    $dbType = $dbType ?? 'system';
    // writeLog("系统错误: {$errorMsg}", $dbType);
    echo json_encode(['success' => false, 'message' => '系统错误: ' . $errorMsg]);
}
exit;